package source.Objetos 
{
    import net.flashpunk.Entity;
    import net.flashpunk.graphics.Image;
    import net.flashpunk.utils.Input;
    import source.Assets;
    import source.Global;

	public class Bloque extends Entity {
        public var coordVirtualY:int = 0; //la coordenada Y virtual del Bloque, para detectar colisiones en coordenadas virtuales
        
		public function Bloque(x:int, y:int) {
			super(x, y);
			graphic = new Image(Assets.OBJ_BLOQUE);
			type = "Solid";
			setHitbox(17, 25, -4, 0);
		}
		
		override public function update():void {
			//Destruimos el bloque si es colisionado por un proyectil del PJ:
			if (collide("ProyectilPJ", x - 1, y) || //colisión por la izquierda
                collide("ProyectilPJ", x + 1, y))   //colisión por la derecha
                world.remove(this);
                
			//Destruimos el bloque si es colisionado por un proyectil de cualquier enemigo:
			else if (collide("Proyectil", x - 1, y) || //colisión por la izquierda
                     collide("Proyectil", x + 1, y) || //colisión por la derecha
                     collide("Proyectil", x, y - 1) || //colisión por arriba
                     collide("Proyectil", x, y + 1))   //colisión por debajo
                     world.remove(this);
            
            //Cambiamos la coordenada virtual Y para la colisión según estamos en el agua o en el aire
            //(debido a que el PJ hará un golpe descendente a diferentes velocidades, que hay que tener en cuenta)
            if (collide("Agua", x, y)) coordVirtualY = Global.velGolpeDescendente_enAgua;
            else coordVirtualY = Global.velGolpeDescendente_enAire;
            
            //Destruimos el bloque si es colisionado por el PJ realizando el golpe descendente:
            if (collide("PJ", x, y -coordVirtualY) && Input.check("GolpeDescendente") && !Input.check("Salto") && !Global.pj.onground && Global.pj.golpeDescendente)
                world.remove(this);
		}
	}
}